home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / sbin / remove-default-ispell < prev    next >
Text File  |  2009-05-15  |  3KB  |  100 lines

  1. #!/usr/bin/perl -w
  2.  
  3. use Debian::DictionariesCommon q(dico_checkroot);
  4. use Debconf::Client::ConfModule q(:all);
  5.  
  6. dico_checkroot ();
  7.  
  8. die "Usage: $0 package-name\n" if (scalar @ARGV != 1);
  9.  
  10. version ('2.0');
  11.  
  12. my $class    = "ispell";
  13. my $question = "dictionaries-common/default-$class";
  14. my $script   = "/usr/share/dictionaries-common/dc-debconf-select.pl";
  15. my $program  = "remove-default-$class";
  16. my $debug    = 1 if exists $ENV{'DICT_COMMON_DEBUG'};
  17. my $newflag  = "/var/cache/dictionaries-common/flag-$class-new";
  18. my %title    = ('ispell'   => "Dictionaries-common: Ispell dictionary",
  19.         'wordlist' => "Dictionaries-common: Wordlist dictionary"
  20.         );
  21.  
  22. my ($errorcode, $value) = get $question;
  23.  
  24. if ($errorcode == 0) {
  25.   require $script;
  26.  
  27.   my $pkg          = $ARGV[0];
  28.   my $languages    = &dico_parse_languages($class,"languages");
  29.   my @newchoices   = ();
  30.   my %langsinpkg   = ();
  31.  
  32.   # Get list of languages provided by package being removed. Check
  33.   # first if package is already removed, some packages using cdbs
  34.   # call this script twice, the second with package already removed
  35.   if ( exists $languages->{$pkg} ){
  36.     foreach ( split (/\s*,\s*/, $languages->{$pkg}) ){
  37.       $langsinpkg{$_}++;
  38.     }
  39.     # Update $languages removing $pkg entry
  40.     delete $languages->{$pkg};
  41.  
  42.     # Update question variables with new values
  43.     my ($choices, $echoices ) = &dico_get_all_choices($class,$languages);
  44.     subst ($question, "choices", $choices);
  45.     subst ($question, "echoices", $echoices);
  46.  
  47.     # Ask with new values if current value is being removed and langs are left
  48.     if ( %$languages && exists $langsinpkg{$value} ) {
  49.       fset  ($question, "seen", "false");
  50.       input ("critical", $question);
  51.       title ($title{$class});
  52.       go ();
  53.     }
  54.   }
  55. }
  56.  
  57. # If $newflag exists, we are removing an IDWP in the same run another IDWP of the same
  58. # class is to be installed. If the to-be-installed IDWP is the new selection update-default-
  59. # -$class will fail because the new IDWP is not yet unpacked. Since in this case update-
  60. # -default-$class will be run in new IDWP postinst, we do not it here and so avoid problems.
  61. if ( -f $newflag ) {
  62.   print STDERR "$program: $newflag exists, defer update-default-$class run\n" if $debug;
  63. } else {
  64.   system "update-default-$class --rebuild";
  65. }
  66.  
  67. # Local Variables:
  68. #  perl-indent-level: 2
  69. # End:
  70.  
  71. __END__
  72.  
  73. =head1 NAME
  74.  
  75. remove-default-ispell - remove default ispell dictionary
  76.  
  77. =head1 SYNOPSIS
  78.  
  79.  remove-default-ispell <package>
  80.  
  81. =head1 DESCRIPTION
  82.  
  83. WARNING: Not to be used from the command line unless you know very well what you are doing.
  84.  
  85. When called from package postrm, this program will take care of removing the entries
  86. associated to a ispell package from the dictionaries-common database
  87. and call for the new selection if it was the default one.
  88.  
  89. =head1 SEE ALSO
  90.  
  91. The dictionaries-common policy document
  92.  
  93. =head1 AUTHORS
  94.  
  95. Rafael Laboissiere
  96.  
  97. =cut
  98.  
  99. #  LocalWords:  ispell wordlist
  100.